package com.cms.recursoshumanos.object.list;

import java.util.Vector;

import net.rim.device.api.util.Persistable;
import net.rim.device.api.util.SimpleSortingVector;

import com.cms.recursoshumanos.object.Contacto;
import com.cms.recursoshumanos.utilities.ContactoComparator;

public class ListaContacto
{
	Vector listaContacto;
	
	public ListaContacto()
	{
		this.listaContacto = new Vector();
	}
	public void actualizarPersona(Contacto elContacto)
	{
		for (int i = 0 ; i < cantElementListaContacto() ; i++ )
		{
			if (getContactoAtIndex(i).getEmpleado().getPersona().getPersonaId() == 
					elContacto.getEmpleado().getPersona().getPersonaId())
			{
				
				getContactoAtIndex(i).getEmpleado().getPersona().setUrlFoto(
						elContacto.getEmpleado().getPersona().getUrlFoto());
				getContactoAtIndex(i).getEmpleado().getPersona().setFoto_Persona(
						elContacto.getEmpleado().getPersona().getFoto_Persona());
				
				break;
			}
		}
	}
	
	
	public void ordenar_lista()
	{		
		SimpleSortingVector ssv = new SimpleSortingVector();
		ssv.setSortComparator(new ContactoComparator());
		
		Vector aux_lista_contacto = listaContacto;
		
		for (int i = 0; i < aux_lista_contacto.size(); i++)
		{
			ssv.addElement(aux_lista_contacto.elementAt(i));
		}
		listaContacto = ssv;
	}
	
	public Contacto getContactoByPersonaId(int id_personao)
	{
		Contacto elContacto = null;
		for (int i = 0; i < cantElementListaContacto() ; i++)
		{
			Contacto elAdiestrmaientoEncontrado = getContactoAtIndex(i);
			if (elAdiestrmaientoEncontrado.getEmpleado().getPersona().getPersonaId() == id_personao)
			{
				elContacto = elAdiestrmaientoEncontrado;
				break;
			}
		}
		return elContacto;
	} 
	public void deleteContacto(Contacto elContacto)
	{
		for (int i = 0 ; i < cantElementListaContacto() ; i++)
		{
			Contacto elContactoEnLista = getContactoAtIndex(i);
			if (elContactoEnLista.getEmpleado().getPersona().getPersonaId() == 
					elContacto.getEmpleado().getPersona().getPersonaId())
			{
				deleteContactoAtIndex(i);
				break;
			}
		}
	}
	public ListaContacto getListaFavorito()
	{
		ListaContacto regreso = new ListaContacto();
		for (int i = 0 ; i < cantElementListaContacto() ; i++)
		{
			Contacto aux_contacto = getContactoAtIndex(i);
			if (aux_contacto.getFavorito())
			{
				regreso.addContacto(aux_contacto);
			}
		}
		return regreso;
	}
	public int getIndexContacto(Contacto elContacto)
	{
		return this.listaContacto.indexOf(elContacto);
	}
	public int cantElementListaContacto()
	{
		return this.listaContacto.size();
	}
	public void actualizar_contacto_en_lista(Contacto elContacto)
	{
		for (int i = 0; i < cantElementListaContacto(); i++)
		{
			Contacto contacto_aux = getContactoAtIndex(i);
			if (contacto_aux.getEmpleado().getPersona().getPersonaId() == 
					elContacto.getEmpleado().getPersona().getPersonaId())
			{
				getContactoAtIndex(i).setEmpleado(elContacto.getEmpleado());
			}
		}
	}
	public void agregar_contacto_a_lista(Contacto elContacto)
	{
		if (getContactoByPersonaId(elContacto.getEmpleado().getPersona().getPersonaId()) == null)
		{
			addContacto(elContacto);
		}
		else
		{
			actualizar_contacto_en_lista(elContacto);
		}
	}
	public void addContacto(Contacto elContacto)
	{
		this.listaContacto.addElement(elContacto);	
	}
	public void setListaContacto(Vector listaContacto)
	{
		this.listaContacto = listaContacto;
	}
	public Vector getListaContacto()
	{
		return this.listaContacto;
	}
	public void resetListaContacto()
	{
		listaContacto.removeAllElements();
	}
	public void deleteContactoAtIndex(int index)
	{
		listaContacto.removeElementAt(index);
	}
	public Contacto getContactoAtIndex(int index)
	{
		return (Contacto) this.listaContacto.elementAt(index);
	}
	
}


